/*
 * Copyright 2007 phosphor Inc. All rights reserved.
 */

package com.maywide.jdp.core.bean;

import java.io.Serializable;
import java.util.Map;

import com.maywide.jdp.core.vo.Page;

/**
 * <b>基础Bean接口</b>
 * <p>
 * 主要对对象的添加、删除、修改和查询操作。
 * <p>
 * 
 * @author luoyang
 * @version 1.1, 2008-04-01
 * @since JDK1.4
 */
public interface BaseBean {
	/**
	 * 每页显示数量的查询条件常量，默认为"limit"
	 */
	public static final String LIMIT = "limit";

	/**
	 * 每页显示开始记录点的查询条件常量，默认为"start"
	 */
	public static final String START = "start";

	/**
	 * 每页显示排序方向的查询条件常量，默认为"sort"
	 */
	public static final String SORT = "sort";

	/**
	 * 每页显示排序字段的查询条件常量，默认为"dir"
	 */
	public static final String DIR = "dir";

	/**
	 * 删除对象
	 * 
	 * @param obj
	 *            要删除的对象
	 * @throws SysException
	 *             系统异常
	 * @throws AppException
	 *             应用异常
	 */
	@SuppressWarnings("rawtypes")
	public void remove(Class clazz,Serializable id) throws Exception;

	/**
	 * 添加对象
	 * 
	 * @param obj
	 *            要添加的对象
	 * @throws SysException
	 *             系统异常
	 * @throws AppException
	 *             应用异常
	 */
	public void insert(Object obj) throws Exception;

	/**
	 * 修改对象
	 * 
	 * @param obj
	 *            要修改的对象
	 * @throws SysException
	 *             系统异常
	 * @throws AppException
	 *             应用异常
	 */
	public void update(Object obj) throws Exception;

	/**
	 * 装载对象
	 * @param id
	 *            要装载的对象id
	 * 
	 * @return 装载的对象
	 * @throws SysException
	 *             系统异常
	 * @throws AppException
	 *             应用异常
	 */
	public Object load(Serializable id)
			throws Exception;

	/**
	 * 根据查询模板分页查询
	 * 
	 * @param template
	 *            查询模板
	 * @return 分页查询结果
	 * @throws SysException
	 *             系统异常
	 * @throws AppException
	 *             应用异常
	 */
	public Page page(int first,int limit,String sort,String dir,Map<String, Object> conditions,Map<String, Object> parameters) throws Exception;
}
